1. Field of the Invention
This invention generally relates to streaming applications in a computing system. More particularly, the invention relates to a system and method for streaming application upgrades in a low bandwidth environment.
2. Description of the Related Art
A common method of delivering software applications in computing systems is via a streaming server. “Streaming” in this context generally refers to a form of on-demand software distribution in which an application is downloaded from a server, or other host, to a target in response to a request (demand) from the target. Such a software application may be referred to as a “streamed application.” Such techniques may include initially streaming only those portions of an application necessary to install and begin execution of the application with basic or otherwise required functionality. In this manner, the entire application need not be downloaded to a target computing system prior to beginning execution of the application. If other portions of the application are needed, they may be delivered in the background or on demand through the same streaming mechanism. For example, the server computer may first stream one or more startup blocks which include just enough executable code for the streamed application to be launched on the host computer. Upon receiving the startup blocks, the host computer may execute the startup blocks to launch the streamed application. Further blocks of code or data for the streamed application may then be dynamically streamed to the host computer from the server computer while the streamed application is executing.
As the number and variety of applications in use as well as the number of clients served by a server increase, the bandwidth needed for data transfer also increases. When an application upgrade becomes available, bandwidth may be consumed for data transfers to each client that requires the upgrade. However, with the proliferation of a variety of connection technologies to support mobile computing on a wide selection of different client devices has come a corresponding likelihood that a client will have a low-bandwidth connection to a server.
In addition to the above considerations, it is known that different versions of applications may share a significant portion of their data. Consequently, at least some of the data transferred in an upgrade is redundant data. Accordingly, systems and methods of streaming updates to clients that take advantage of redundant data and reduce bandwidth utilization may be desired.